package cn.jji8.patternLogin.spigot.data;

import cn.jja8.knapsackToGo3.allUsed.Communication;
import cn.jja8.knapsackToGo3.spigot.KnapsackToGo3Spigot;
import cn.jja8.patronSaint_2021_7_8_2056.bukkit.Data.String.LocationToString;
import cn.jji8.patternLogin.spigot.PatternLogin;
import org.bukkit.Location;

import java.net.InetAddress;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;

public class KnapsackToGo3Data  implements  DataMinger{
    /**
     * 获取玩家是否需要登入
     *
     * @param playerName
     */
    @Override
    public boolean getPlayerNeedLogin(String playerName) {
        PatternLogin.getMain().getLogger().info("正在向bc获取玩家"+playerName+"的登录数据.");
        Communication.Return huikui = KnapsackToGo3Spigot.get通信().发送回馈命令(KnapsackToGo3Spigot.get配置文件().BC服务器名称, "patternLogin", playerName.getBytes(StandardCharsets.UTF_8));
        return !Boolean.parseBoolean(new String(huikui.数据,StandardCharsets.UTF_8));
    }

    /**
     * 设置玩家已经登录
     *
     * @param playerName
     */
    @Override
    public void setPlayerAlreadyLogin(String playerName) {
        KnapsackToGo3Spigot.get通信().发送不回馈命令(KnapsackToGo3Spigot.get配置文件().BC服务器名称,"patternLogin",playerName.getBytes(StandardCharsets.UTF_8));
    }

    /**
     * 设置某玩家的密码数据
     *
     * @param playerName
     * @param password
     */
    @Override
    public void setPassword(String playerName, String password) {
        KnapsackToGo3Spigot.get数据().写入数据("patternLogin/"+playerName,password.getBytes(StandardCharsets.UTF_8));
    }

    /**
     * 获取某玩家的密码数据
     * @param playerName
     */
    @Override
    public String getPassword(String playerName) {
        byte[] data = KnapsackToGo3Spigot.get数据().获取数据("patternLogin/" + playerName);
        if (data.length<3){
            return null;
        }
        return new String(data,StandardCharsets.UTF_8);
    }

    /**
     * 设置玩家下线时位置
     *
     * @param playerName
     * @param location
     */
    @Override
    public void setLocation(String playerName, Location location) {
        KnapsackToGo3Spigot.get数据().写入数据("OfflineLocation/" + playerName, LocationToString.totring(location).getBytes(StandardCharsets.UTF_8));
    }

    /**
     * 获取玩家下线时位置
     *
     * @param playerName
     */
    @Override
    public Location getLocation(String playerName) {
        return LocationToString.load(new String(KnapsackToGo3Spigot.get数据().获取数据("OfflineLocation/" + playerName),StandardCharsets.UTF_8));
    }

    /**
     * 获取某ip下的全部玩家
     *
     * @param ip
     */
    @Override
    public List<String> getAllIpPlayer(InetAddress ip) {
        return new ArrayList<>();
    }

    /**
     * 设置玩家在某个ip下
     *
     * @param playerName
     * @param ip
     */
    @Override
    public void setPlayerIp(String playerName, InetAddress ip) {

    }
}
